
const { usersModel } = require('../models/usersModel');
const jwt = require('jsonwebtoken');

async function register(req, res, next) {
    // 接收前端发送的数据
    const data = req.body;
    // 后端开始处理请求：
    // 判断当前账号是否已经注册
    const isUse = await usersModel.find({ username: data.username });
    if (isUse.length > 0) {
        res.send({
            message: '账号已存在，注册失败',
            code: 0,
            type: 'IS_EXIST'
        });
        return;
    }
    // 保存账号密码
    const result = await usersModel.create(data);
    // 返回处理结果给前端
    if (result) {
        res.send({
            message: '注册成功',
            code: 1
        });
    } else {
        res.send({
            message: '注册失败',
            code: 0,
            type: 'SERVER_ERROR'
        });
    }
    // ...
}

async function login(req, res, next) {
    // 处理登录逻辑
    const data = req.body;
    // 判断 data 在数据库中是否存在
    const result = await usersModel.find(data);
    if (result.length > 0) {
        // 生成 token
        const token = jwt.sign(
            { loginUser: result[0] },  // 用户相关信息
            'hello',  // 密钥，任意字符串
            { expiresIn: 60 * 60 }  // token 有效期，数字不带单位，默认是 s
        )
        res.send({
            message: '登录成功',
            code: 1,
            token: 'Bearer ' + token
        })
    } else {
        res.send({
            message: '登录失败',
            code: 0
        })
    }
}

async function getUserInfo(req, res) {
    // console.log('token 验证通过');
    // 获取 headers 中的 token
    const token = req.get('Authorization').split(' ')[1];
    if (token) {
        // 解码
        const { loginUser } = jwt.verify(token, 'hello');
        res.send({
            message:"用户信息获取成功",
            code: 1,
            data: loginUser
        })
    } else {
        res.send({
            message:"用户信息获取失败，检查 token",
            code: 0
        })
    }
}

module.exports = {
    register, login, getUserInfo
}